using System;
using System.Collections.Generic;
using System.Text;

namespace DDW
{
	[Flags]
	public enum Modifier : uint 
	{
		Empty		= 0x0000000,
		New			= 0x0000001,
		Public		= 0x0000002,
		Protected	= 0x0000004,
		Internal	= 0x0000008,
		Private		= 0x0000010,
		Abstract	= 0x0000020,
		Sealed		= 0x0000040,

		Static		= 0x0000100,
		Virtual		= 0x0000200,
		Override	= 0x0000400,
		Extern		= 0x0000800,
		Readonly	= 0x0001000,
		Volatile	= 0x0002000,

		Ref			= 0x0008000,
		Out			= 0x0010000,
		Params		= 0x0020000,

		Assembly	= 0x0040000,
		Field		= 0x0080000,
		Event		= 0x0100000,
		Method		= 0x0200000,
		Param		= 0x0400000,
		Property	= 0x0800000,
		Return		= 0x1000000,
		Type		= 0x2000000,
		Module		= 0x4000000,

		ClassMods		= New | Public | Protected | Internal | Private | Abstract | Sealed,
		ConstantMods	= New | Public | Protected | Internal | Private,
		FieldMods		= New | Public | Protected | Internal | Private | Static | Readonly | Volatile,
		MethodMods		= New | Public | Protected | Internal | Private | Static | Virtual | Sealed | Override | Abstract | Extern,
		ParamMods		= Ref | Out,
		PropertyMods	= New | Public | Protected | Internal | Private | Static | Virtual | Sealed | Override | Abstract | Extern,
		EventMods		= New | Public | Protected | Internal | Private | Static | Virtual | Sealed | Override | Abstract | Extern,
		IndexerMods		= New | Public | Protected | Internal | Private | Static | Virtual | Sealed | Override | Abstract | Extern,
		OperatorMods	= Public | Static | Extern,
		ConstructorMods = Public | Protected | Internal | Private | Extern,
		DestructorMods	= Extern,
		StructMods		= New | Public | Protected | Internal | Private,
		InterfaceMods	= New | Public | Protected | Internal | Private,
		EnumMods		= New | Public | Protected | Internal | Private,
		DelegateMods	= New | Public | Protected | Internal | Private,
		AttributeMods	= Field | Event | Method | Param | Property | Return | Type | Module,
		GlobalAttributeMods	= Assembly,
	}

}
